#pragma once

template< typename T >
class Singleton
{
	protected :

				Singleton( VOID ){
		}

		virtual	~Singleton( VOID ){
		}

	public :

		static
		T &		GetInstance( VOID ){
			static T staticSingletonClass;
			return staticSingletonClass;
		}
};

//	USAGE
/*

class CSingletonTest : public Singleton< CSingletonTest >
{
	public :
		INT_PTR	m_n;
};

/////////////////////////////////////////

CSingletonTest::GetInstance().m_n = 10;

*/